package 贪心;

import java.util.ArrayList;
import java.util.List;

/**
 * @author TTDB
 * @create 2025/9/23
 * @Description:重点题，类似区间合并
 */
public class partitionLabels {
     public List<Integer> partitionLabels(String S) {
         //知道怎么是区间合并，但是呢怎么找区间呢？---创建数组存放就行
         char[] s = S.toCharArray();
         int[] n = new int[26];
         for (int i = 0; i < s.length; i++) {
             n[s[i] - 'a'] = i;//记录每个字母出现的最后位置
         }
         int start = 0, end = 0;
         List<Integer> res = new ArrayList<>();
         for(int i = 0; i < s.length; i++){
             end = Math.max(end, n[s[i]-'a']);
             if(i == end){
                 //找到了一个区间
                  res.add(end-start+1);
                  start = i+1;
             }
         }
         return res;
    }
}
